#!/usr/bin/bash

# 联系人列表
tel=(
号码1
号码2
)


# 目录列表1
files=(
# 备注1
/home/lhc
# 备注2
/mnt/
)

# 定义一个发短信函数
send_msg(){
    for itel in ${tel[@]}
    do
        curl "http://短信网关URL?OperID=xxxx&OperPass=xxxx&DesMobile=${itel}&Content=${*}&ContentType=8"
    done
}

# 获取当前日期
now=$(date +%s)

# 执行循环，遍历每个目录
for i in ${files[@]}
do
    (
    # 把路径转换成日志名字
    path_name=$(echo $i | tr '/' '_')

    # 获取上次发送短信时间
    last_send=$(cat /tmp${i}/send_msg_time 2>/dev/null)

    # 查询特定时间是否有空文件，这里是半小时前到2小时内，把空文件列表写入日志
    is_empty=$(ls -Ul --time-style="+%s" "$i" | grep ^- | awk -v now=$(date +%s) '$5 == 0 && $6 > now-7200 && $6 < now-1800' | tee -a "/tmp/${path_name}.list" | wc -l)
    
    # 判断是否有空文件，并判断半小时内是否发送过短信
    if (( is_empty != 0 && now - ${last_send:-0} > 1800 ))
    then
        send_msg "$(echo "特定目录2小时内有0kb文件，登陆10.149.212.xx:${i}查看" | iconv -f utf8 -t gbk )"
        date +%s > /tmp/${path_name}.send_time
    fi
    ) &
    # 这里是把循环体括放入后台执行，让脚本并发执行，提高效率
done

# 等待后台执行的命令完成再退出脚本
wait






# 旧版本
# for i in ${!files[@]}
# do
#     # 判断是否有空文件，时间为半小时到2小时的文件
#     is_empty=$(ls -Ul --time-style="+%s" "${files[i]}" |grep ^- | awk -v now=$(date +%s) '$5 == 0 && $6 > now-7200 && $6 < now-1800 ' | wc -l)
#     # 判断是否有时间戳文件，有则加载，无则置0
#     if [ -f /tmp/send_msg_time_${i} ]
#     then
#         last_send=$(cat /tmp/send_msg_time_${i})
#     else
#         last_send=0
#     fi

#     if (( is_empty != 0 && now-last_send>=1800 ))
#     then
#         msg=$(echo "特定目录2小时内有0kb文件，登陆10.149.212.xx:${files[d]}查看" | iconv -f utf8 -t gbk )
#         for itel in ${tel[@]}
#         do
#             curl "http://短信网关URL?OperID=xxxx&OperPass=xxxx&DesMobile=${itel}&Content=${msg}&ContentType=8"
#         done
#         date +%s > /tmp/send_msg_time_${i}
#     fi
# done



